/**
 * 作为入口文件导出所有路由数据，形成一个路由树。这些路由数据有两个用途
 * 导入 vue-router 在项目中进行路由管理
 * 根据当前登录管理员所拥有的权限筛选左侧菜单
 * title	页面title / 左侧sidebar
 * name	使用 Symbol 确保唯一性，若未设置则默认为随机字符串 配置文件中的唯一标识
 * type	folder：有子路由，折叠sidebar / tab：子路由在右侧以menuTab展现 / view：直接展示页面
 * icon	可直接配置 iconfont 类名 / 也可配置为图片路径
 * path	当前页面路由
 * filePath	文件路径
 * order	路由排序
 * inNav	是否在左侧菜单栏显示
 * permission	当前路由权限，数组格式，满足数组内任一权限即可展示该页面 未使用
 * mark 对应后台菜单权限
 * @type {({route: string, inNav: boolean, filePath: string, name: symbol, icon: string, title: string, type: string, order: number}|{route: null, inNav: boolean, children: [{route: string, inNav: boolean, filePath: string, name: string, icon: string, title: string, type: string}, {route: string, inNav: boolean, filePath: string, name: string, icon: string, title: string, type: string}], filePath: string, name: null, icon: string, title: string, type: string, order: null})[]}
 */
import Util from '@/ck/util/util'
import centerRouter from './center'
import productRouter from './product'


const homeRouter = [{
    title: '长安保险',
    type: 'view',
    name: 'about',
    mark: 'about',
    path: '/about',
    filePath: 'view/about/about.vue',
    inNav: true,
    icon: '',
    order: 1,
  },
  {
    title: '404',
    type: 'view',
    name: '404',
    mark: '404',
    path: '/404',
    filePath: 'view/error-page/404.vue',
    inNav: false,
    icon: 'iconfont icon-rizhiguanli',
  },
  centerRouter,
  productRouter

]
// TODO 筛除添加的插件
// TODO 处理顺序以order排序
// 使用 Symbol 处理 name 字段, 保证唯一性
const deepReduceName = target => {
  if (Array.isArray(target)) { //1、判断target是否是数组 每一项item都执行一遍自身函数
    target.forEach(item => {
      if (typeof item !== 'object') {
        return
      }
      deepReduceName(item)
    })
    return
  }
  if (typeof target === 'object') { //2、执行到item，判断是否object
    if (typeof target.name !== 'symbol') { // 2.1、非symbol处理一下
      target.name = target.name || Util.getRandomStr()
      target.name = Symbol(target.name)
    }
    if (Array.isArray(target.children)) { // 2.2、处理子页面
      target.children.forEach(item => {
        if (typeof item !== 'object') {
          return
        }
        deepReduceName(item)
      })
    }
  }
}

deepReduceName(homeRouter)
export default homeRouter
